The development of electronic manufacturing technology has created the ability to build thousands of circuits on a single chip. In order to take advantage of this technology, thousands of circuits must by physically placed and connected on the chip. This can be a very time consuming process, especially when the actual process of designing, placing, and connecting the circuits on the chip can affect the performance and timing requirements of the chip. Therefore, it has become necessary to automate the design process by using a computer to quickly place and wire predesigned circuits into a functional chip.
The basic problem with this automation technique is that it sacrifices the performance of the resulting circuit for the ability to get a connected circuit in a reasonable amount of computing time. When the functional chip being designed is a central processing unit of a computer or other chip in which performance is critical and design complexity high, the performance sacrificed is not acceptable and the automation technique is not useful. This performance sacrifice usually manifests itself in the inability to obtain timing closure in complicated logic. Timing closure is the difference between the time allowed for processing information on the chip as logically designed, and the time required for processing information on the chip as physically designed. Timing closure is not met when the chip as physically wired and placed is not as fast as required by the logical design.
The sacrifice in performance from the prior art automated placement and wire techniques is in two main areas. First, the prior art techniques are mainly concerned with the length of individual wires connecting the individual circuits. It is true that minimizing length helps alleviate performance difficulties, however, the size of the individual drivers driving the lines is also a critical performance factor that is not accounted for by these techniques. Additionally, not all wire lengths need to be minimized. Selectivity in which wire lengths to minimize is critical to completing the overall design. Second, prior art techniques analyze physical placement effects on timing by computing those effects from a detailed timing model. This analysis requires significant computing time which limits the use of the timing model for all circuit placement changes.
Some solutions to the above problems include sensitizing the wiring program to critical logical nets. Critical nets are those circuits within the chip which have relatively more impact on the overall chip performance than do other nets. The sensitization of the wiring program would identify those nets and wire them near the beginning of the program so that they would avoid having to deal with later chip wire congestion and therefore have a greater chance to be as short as possible. This type of sensitization would also include a minimization of the number of maximum crossings of a reference line. The number of crossings would indicate how many bends in the wire which impede circuit performance, therefore, minimizing the number of bends would enhance the chip performance. Although this technique improves performance, it does not address the physical placement of the circuits which created the critical nets.
An alternative approach would be to do a complete timing analysis of the chip after the physical design and identify the critical areas where the physical design added significant delay to critical logical nets. When these areas are found, individual circuits can be rearranged so as to minimize the performance impact. The problem with this is that when the number of circuits gets large or the wiring channels get densely populated the individual changes are difficult and time consuming to make. Also, the number of changes to be made must be limited to reduce the complexity of individual changes and their impact on the design. These difficulties make this design alternative limited because the chips requiring automation typically have large numbers of circuits.
A further alternative design automation approach involves automatically swapping the position of circuits within a chip after it has been wired and recalculating the timing parameters. This procedure leads to inordinate computation time because it is typical to find many paths being affected by an interchange in only two circuits. Therefore, the position swapping is limited in some manner to only those critical paths, physical and logical, which are judged to involve the greatest impact on the circuit. This limitation on which circuits to interchange, limits the effectiveness of the automation procedure. This is because many physical positions of circuits are never evaluated and so the judgment of which circuits to interchange does not take those possibilities into account.
A still further alternative design automation approach involves placing an upper bound on the maximum length of a wire within all the nets of the chip design. While automated wire placement is difficult, it is not more difficult to use an upper bound than it is to minimize the wire lengths. This approach evaluates slack as a means to prioritize which nets require special attention by the wiring program. Slack is the difference between the designed (logical) delay and the actual delay (after added wiring delay) from the wiring program. If slack is positive, the net meets the design criteria and does not get additional program attention. If the slack is negative, the net is re-routed until the net slack becomes positive. Again, as in other techniques, this program does not account for the placement of the circuits which are to be wired. Therefore, many placement solutions are never considered and so the wiring or performance is not likely to be optimal.